<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no" name="viewport"/>
  <meta content="zh-cn" http-equiv="content-language"/>
  <meta content="02 以终为始：如何让你的努力不白费？" name="description"/>
  <link href="/static/favicon.png" rel="icon"/>
  <title>
   02 以终为始：如何让你的努力不白费？
  </title>
  <link href="/static/index.css" rel="stylesheet"/>
  <link href="/static/highlight.min.css" rel="stylesheet"/>
  <script src="/static/highlight.min.js">
  </script>
  <meta content="Hexo 4.2.0" name="generator"/>
  <script async="" data-website-id="83e5d5db-9d06-40e3-b780-cbae722fdf8c" defer="" src="https://analyze.lianglianglee.com/umami.js">
  </script>
 </head>
 <body>
  <div class="book-container">
   <div class="book-sidebar">
    <div class="book-brand">
     <a href="/">
      <img src="/static/favicon.png"/>
      <span>
       技术文章摘抄
      </span>
     </a>
    </div>
    <div class="book-menu uncollapsible">
     <ul class="uncollapsible">
      <li>
       <a class="current-tab" href="/">
        首页
       </a>
      </li>
      <li>
       <a href="../">
        上一级
       </a>
      </li>
     </ul>
     <ul class="uncollapsible">
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/00%20%e5%bc%80%e7%af%87%e8%af%8d%20%e7%a8%8b%e5%ba%8f%e5%91%98%e8%a7%a3%e5%86%b3%e7%9a%84%e9%97%ae%e9%a2%98%ef%bc%8c%e5%a4%a7%e5%a4%9a%e4%b8%8d%e6%98%af%e7%a8%8b%e5%ba%8f%e9%97%ae%e9%a2%98.html" id="00 开篇词 程序员解决的问题，大多不是程序问题.md">
        00 开篇词 程序员解决的问题，大多不是程序问题.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/01%2010x%e7%a8%8b%e5%ba%8f%e5%91%98%e6%98%af%e5%a6%82%e4%bd%95%e6%80%9d%e8%80%83%e7%9a%84%ef%bc%9f.html" id="01 10x程序员是如何思考的？.md">
        01 10x程序员是如何思考的？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/02%20%e4%bb%a5%e7%bb%88%e4%b8%ba%e5%a7%8b%ef%bc%9a%e5%a6%82%e4%bd%95%e8%ae%a9%e4%bd%a0%e7%9a%84%e5%8a%aa%e5%8a%9b%e4%b8%8d%e7%99%bd%e8%b4%b9%ef%bc%9f.html" id="02 以终为始：如何让你的努力不白费？.md">
        02 以终为始：如何让你的努力不白费？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/03%20DoD%e7%9a%84%e4%bb%b7%e5%80%bc%ef%bc%9a%e4%bd%a0%e5%ae%8c%e6%88%90%e4%ba%86%e5%b7%a5%e4%bd%9c%ef%bc%8c%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bb%96%e4%bb%ac%e8%bf%98%e4%b8%8d%e6%bb%a1%e6%84%8f%ef%bc%9f.html" id="03 DoD的价值：你完成了工作，为什么他们还不满意？.md">
        03 DoD的价值：你完成了工作，为什么他们还不满意？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/04%20%e6%8e%a5%e5%88%b0%e9%9c%80%e6%b1%82%e4%bb%bb%e5%8a%a1%ef%bc%8c%e4%bd%a0%e8%a6%81%e5%85%88%e5%81%9a%e5%93%aa%e4%bb%b6%e4%ba%8b%ef%bc%9f.html" id="04 接到需求任务，你要先做哪件事？.md">
        04 接到需求任务，你要先做哪件事？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/05%20%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%ef%bc%9a%e9%9b%86%e6%88%90%e6%9c%ac%e8%ba%ab%e5%b0%b1%e6%98%af%e5%86%99%e4%bb%a3%e7%a0%81%e7%9a%84%e4%b8%80%e4%b8%aa%e7%8e%af%e8%8a%82.html" id="05 持续集成：集成本身就是写代码的一个环节.md">
        05 持续集成：集成本身就是写代码的一个环节.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/06%20%e7%b2%be%e7%9b%8a%e5%88%9b%e4%b8%9a%ef%bc%9a%e4%ba%a7%e5%93%81%e7%bb%8f%e7%90%86%e4%b8%8d%e9%9d%a0%e8%b0%b1%ef%bc%8c%e4%bd%a0%e8%af%a5%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f.html" id="06 精益创业：产品经理不靠谱，你该怎么办？.md">
        06 精益创业：产品经理不靠谱，你该怎么办？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/07%20%e8%a7%a3%e5%86%b3%e4%ba%86%e5%be%88%e5%a4%9a%e6%8a%80%e6%9c%af%e9%97%ae%e9%a2%98%ef%bc%8c%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bd%a0%e4%be%9d%e7%84%b6%e5%9c%a8%e2%80%9c%e5%9d%91%e2%80%9d%e9%87%8c%ef%bc%9f.html" id="07 解决了很多技术问题，为什么你依然在“坑”里？.md">
        07 解决了很多技术问题，为什么你依然在“坑”里？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/08%20%e4%b8%ba%e4%bb%80%e4%b9%88%e8%af%b4%e5%81%9a%e4%ba%8b%e4%b9%8b%e5%89%8d%e8%a6%81%e5%85%88%e8%bf%9b%e8%a1%8c%e6%8e%a8%e6%bc%94%ef%bc%9f.html" id="08 为什么说做事之前要先进行推演？.md">
        08 为什么说做事之前要先进行推演？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/09%20%e4%bd%a0%e7%9a%84%e5%b7%a5%e4%bd%9c%e5%8f%af%e4%bb%a5%e7%94%a8%e6%95%b0%e5%ad%97%e8%a1%a1%e9%87%8f%e5%90%97%ef%bc%9f.html" id="09 你的工作可以用数字衡量吗？.md">
        09 你的工作可以用数字衡量吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/10%20%e8%bf%ad%e4%bb%a30_%20%e5%90%af%e5%8a%a8%e5%bc%80%e5%8f%91%e4%b9%8b%e5%89%8d%ef%bc%8c%e4%bd%a0%e5%ba%94%e8%af%a5%e5%87%86%e5%a4%87%e4%bb%80%e4%b9%88%ef%bc%9f.html" id="10 迭代0_ 启动开发之前，你应该准备什么？.md">
        10 迭代0_ 启动开发之前，你应该准备什么？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/11%20%e5%90%91%e5%9f%83%e9%9a%86%c2%b7%e9%a9%ac%e6%96%af%e5%85%8b%e5%ad%a6%e4%b9%a0%e4%bb%bb%e5%8a%a1%e5%88%86%e8%a7%a3.html" id="11 向埃隆·马斯克学习任务分解.md">
        11 向埃隆·马斯克学习任务分解.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/12%20%e6%b5%8b%e8%af%95%e4%b9%9f%e6%98%af%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e4%ba%8b%e5%90%97%ef%bc%9f.html" id="12 测试也是程序员的事吗？.md">
        12 测试也是程序员的事吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/13%20%e5%85%88%e5%86%99%e6%b5%8b%e8%af%95%ef%bc%8c%e5%b0%b1%e6%98%af%e6%b5%8b%e8%af%95%e9%a9%b1%e5%8a%a8%e5%bc%80%e5%8f%91%e5%90%97%ef%bc%9f.html" id="13 先写测试，就是测试驱动开发吗？.md">
        13 先写测试，就是测试驱动开发吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/14%20%e5%a4%a7%e5%b8%88%e7%ba%a7%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e5%b7%a5%e4%bd%9c%e7%a7%98%e7%ac%88.html" id="14 大师级程序员的工作秘笈.md">
        14 大师级程序员的工作秘笈.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/15%20%e4%b8%80%e8%b5%b7%e7%bb%83%e4%b9%a0%ef%bc%9a%e6%89%8b%e6%8a%8a%e6%89%8b%e5%b8%a6%e4%bd%a0%e5%88%86%e8%a7%a3%e4%bb%bb%e5%8a%a1.html" id="15 一起练习：手把手带你分解任务.md">
        15 一起练习：手把手带你分解任务.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/16%20%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bd%a0%e7%9a%84%e6%b5%8b%e8%af%95%e4%b8%8d%e5%a4%9f%e5%a5%bd%ef%bc%9f.html" id="16 为什么你的测试不够好？.md">
        16 为什么你的测试不够好？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/17%20%e7%a8%8b%e5%ba%8f%e5%91%98%e4%b9%9f%e5%8f%af%e4%bb%a5%e2%80%9c%e7%a0%8d%e2%80%9d%e9%9c%80%e6%b1%82%e5%90%97%ef%bc%9f.html" id="17 程序员也可以“砍”需求吗？.md">
        17 程序员也可以“砍”需求吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/18%20%e9%9c%80%e6%b1%82%e7%ae%a1%e7%90%86%ef%bc%9a%e5%a4%aa%e5%a4%9a%e4%ba%ba%e7%bb%99%e4%bd%a0%e5%ae%89%e6%8e%92%e4%bb%bb%e5%8a%a1%ef%bc%8c%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f.html" id="18 需求管理：太多人给你安排任务，怎么办？.md">
        18 需求管理：太多人给你安排任务，怎么办？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/19%20%e5%a6%82%e4%bd%95%e7%94%a8%e6%9c%80%e5%b0%8f%e7%9a%84%e4%bb%a3%e4%bb%b7%e5%81%9a%e4%ba%a7%e5%93%81%ef%bc%9f.html" id="19 如何用最小的代价做产品？.md">
        19 如何用最小的代价做产品？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/20%20%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%96%e7%95%8c%e5%92%8c%e4%bd%a0%e7%9a%84%e7%90%86%e8%a7%a3%e4%b8%8d%e4%b8%80%e6%a0%b7%ef%bc%9f.html" id="20 为什么世界和你的理解不一样？.md">
        20 为什么世界和你的理解不一样？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/21%20%e4%bd%a0%e7%9a%84%e4%bb%a3%e7%a0%81%e4%b8%ba%e8%b0%81%e8%80%8c%e5%86%99%ef%bc%9f.html" id="21 你的代码为谁而写？.md">
        21 你的代码为谁而写？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/22%20%e8%bd%bb%e9%87%8f%e7%ba%a7%e6%b2%9f%e9%80%9a%ef%bc%9a%e4%bd%a0%e6%80%bb%e6%98%af%e5%9c%a8%e5%bc%80%e4%bc%9a%e5%90%97%ef%bc%9f.html" id="22 轻量级沟通：你总是在开会吗？.md">
        22 轻量级沟通：你总是在开会吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/23%20%e5%8f%af%e8%a7%86%e5%8c%96%ef%bc%9a%e4%b8%80%e7%a7%8d%e6%9b%b4%e4%b8%ba%e7%9b%b4%e8%a7%82%e7%9a%84%e6%b2%9f%e9%80%9a%e6%96%b9%e5%bc%8f.html" id="23 可视化：一种更为直观的沟通方式.md">
        23 可视化：一种更为直观的沟通方式.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/24%20%e5%bf%ab%e9%80%9f%e5%8f%8d%e9%a6%88%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bd%a0%e4%bb%ac%e5%85%ac%e5%8f%b8%e6%80%bb%e6%98%af%e5%81%9a%e4%b8%8d%e5%a5%bd%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%ef%bc%9f.html" id="24 快速反馈：为什么你们公司总是做不好持续集成？.md">
        24 快速反馈：为什么你们公司总是做不好持续集成？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/25%20%e5%bc%80%e5%8f%91%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98%e4%b8%80%e5%86%8d%e5%87%ba%e7%8e%b0%ef%bc%8c%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f.html" id="25 开发中的问题一再出现，应该怎么办？.md">
        25 开发中的问题一再出现，应该怎么办？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/26%20%e4%bd%9c%e4%b8%ba%e7%a8%8b%e5%ba%8f%e5%91%98%ef%bc%8c%e4%bd%a0%e4%b9%9f%e5%ba%94%e8%af%a5%e8%81%86%e5%90%ac%e7%94%a8%e6%88%b7%e5%a3%b0%e9%9f%b3.html" id="26 作为程序员，你也应该聆听用户声音.md">
        26 作为程序员，你也应该聆听用户声音.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/27%20%e5%b0%bd%e6%97%a9%e6%9a%b4%e9%9c%b2%e9%97%ae%e9%a2%98%ef%bc%9a%20%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a2%ab%e6%8c%87%e8%b4%a3%e7%9a%84%e6%80%bb%e6%98%af%e4%bd%a0%ef%bc%9f.html" id="27 尽早暴露问题： 为什么被指责的总是你？.md">
        27 尽早暴露问题： 为什么被指责的总是你？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/28%20%e7%bb%93%e6%9e%84%e5%8c%96%ef%bc%9a%e5%86%99%e6%96%87%e6%a1%a3%e4%b9%9f%e6%98%af%e4%b8%80%e7%a7%8d%e5%ad%a6%e4%b9%a0%e6%96%b9%e5%bc%8f.html" id="28 结构化：写文档也是一种学习方式.md">
        28 结构化：写文档也是一种学习方式.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/29%20%e2%80%9c%e6%87%92%e6%83%b0%e2%80%9d%e5%ba%94%e8%af%a5%e6%98%af%e6%89%80%e6%9c%89%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e9%aa%84%e5%82%b2.html" id="29 “懒惰”应该是所有程序员的骄傲.md">
        29 “懒惰”应该是所有程序员的骄傲.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/30%20%e4%b8%80%e4%b8%aa%e5%a5%bd%e7%9a%84%e9%a1%b9%e7%9b%ae%e8%87%aa%e5%8a%a8%e5%8c%96%e5%ba%94%e8%af%a5%e6%98%af%e4%bb%80%e4%b9%88%e6%a0%b7%e5%ad%90%e7%9a%84%ef%bc%9f.html" id="30 一个好的项目自动化应该是什么样子的？.md">
        30 一个好的项目自动化应该是什么样子的？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/31%20%e7%a8%8b%e5%ba%8f%e5%91%98%e6%80%8e%e4%b9%88%e5%ad%a6%e4%b9%a0%e8%bf%90%e7%bb%b4%e7%9f%a5%e8%af%86%ef%bc%9f.html" id="31 程序员怎么学习运维知识？.md">
        31 程序员怎么学习运维知识？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/32%20%e6%8c%81%e7%bb%ad%e4%ba%a4%e4%bb%98%ef%bc%9a%e6%9c%89%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e5%b0%b1%e5%a4%9f%e4%ba%86%e5%90%97%ef%bc%9f.html" id="32 持续交付：有持续集成就够了吗？.md">
        32 持续交付：有持续集成就够了吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/33%20%e5%a6%82%e4%bd%95%e5%81%9a%e5%a5%bd%e9%aa%8c%e6%94%b6%e6%b5%8b%e8%af%95%ef%bc%9f.html" id="33 如何做好验收测试？.md">
        33 如何做好验收测试？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/34%20%e4%bd%a0%e7%9a%84%e4%bb%a3%e7%a0%81%e6%98%af%e6%80%8e%e4%b9%88%e5%8f%98%e6%b7%b7%e4%b9%b1%e7%9a%84%ef%bc%9f.html" id="34 你的代码是怎么变混乱的？.md">
        34 你的代码是怎么变混乱的？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/35%20%e6%80%bb%e6%98%af%e5%9c%a8%e8%af%b4MVC%e5%88%86%e5%b1%82%e6%9e%b6%e6%9e%84%ef%bc%8c%e4%bd%86%e4%bd%a0%e7%9c%9f%e7%9a%84%e7%90%86%e8%a7%a3%e5%88%86%e5%b1%82%e5%90%97%ef%bc%9f.html" id="35 总是在说MVC分层架构，但你真的理解分层吗？.md">
        35 总是在说MVC分层架构，但你真的理解分层吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/36%20%e4%b8%ba%e4%bb%80%e4%b9%88%e6%80%bb%e6%9c%89%e4%ba%ba%e8%a7%89%e5%be%975%e4%b8%87%e5%9d%97%e9%92%b1%e5%8f%af%e4%bb%a5%e5%81%9a%e4%b8%80%e4%b8%aa%e6%b7%98%e5%ae%9d%ef%bc%9f.html" id="36 为什么总有人觉得5万块钱可以做一个淘宝？.md">
        36 为什么总有人觉得5万块钱可以做一个淘宝？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/37%20%e5%85%88%e5%81%9a%e5%a5%bdDDD%e5%86%8d%e8%b0%88%e5%be%ae%e6%9c%8d%e5%8a%a1%e5%90%a7%ef%bc%8c%e9%82%a3%e5%8f%aa%e6%98%af%e4%b8%80%e7%a7%8d%e9%83%a8%e7%bd%b2%e5%bd%a2%e5%bc%8f.html" id="37 先做好DDD再谈微服务吧，那只是一种部署形式.md">
        37 先做好DDD再谈微服务吧，那只是一种部署形式.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/38%20%e6%96%b0%e5%85%a5%e8%81%8c%e4%b8%80%e5%ae%b6%e5%85%ac%e5%8f%b8%ef%bc%8c%e6%80%8e%e4%b9%88%e5%bf%ab%e9%80%9f%e8%bf%9b%e5%85%a5%e5%b7%a5%e4%bd%9c%e7%8a%b6%e6%80%81%ef%bc%9f.html" id="38 新入职一家公司，怎么快速进入工作状态？.md">
        38 新入职一家公司，怎么快速进入工作状态？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/39%20%e9%9d%a2%e5%af%b9%e9%81%97%e7%95%99%e7%b3%bb%e7%bb%9f%ef%bc%8c%e4%bd%a0%e5%ba%94%e8%af%a5%e8%bf%99%e6%a0%b7%e5%81%9a.html" id="39 面对遗留系统，你应该这样做.md">
        39 面对遗留系统，你应该这样做.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/40%20%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e5%a6%82%e4%bd%95%e4%bf%9d%e6%8c%81%e7%ab%9e%e4%ba%89%e5%8a%9b%ef%bc%9f.html" id="40 我们应该如何保持竞争力？.md">
        40 我们应该如何保持竞争力？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%88%92%e9%87%8d%e7%82%b9%20%e2%80%9c%e7%bb%bc%e5%90%88%e8%bf%90%e7%94%a8%e2%80%9d%e4%b8%bb%e9%a2%98%e5%86%85%e5%ae%b9%e7%9a%84%e5%85%a8%e7%9b%98%e5%9b%9e%e9%a1%be.html" id="划重点 “综合运用”主题内容的全盘回顾.md">
        划重点 “综合运用”主题内容的全盘回顾.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%88%92%e9%87%8d%e7%82%b9%20%e2%80%9c%e8%87%aa%e5%8a%a8%e5%8c%96%e2%80%9d%e4%b8%bb%e9%a2%98%e7%9a%84%e9%87%8d%e7%82%b9%e5%86%85%e5%ae%b9%e5%9b%9e%e9%a1%be%e6%b1%87%e6%80%bb.html" id="划重点 “自动化”主题的重点内容回顾汇总.md">
        划重点 “自动化”主题的重点内容回顾汇总.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%88%92%e9%87%8d%e7%82%b9%20%e4%b8%80%e6%ac%a1%e5%85%b3%e4%ba%8e%e2%80%9c%e6%b2%9f%e9%80%9a%e5%8f%8d%e9%a6%88%e2%80%9d%e4%b8%bb%e9%a2%98%e5%86%85%e5%ae%b9%e7%9a%84%e5%a4%8d%e7%9b%98.html" id="划重点 一次关于“沟通反馈”主题内容的复盘.md">
        划重点 一次关于“沟通反馈”主题内容的复盘.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%88%92%e9%87%8d%e7%82%b9%20%e5%85%b3%e4%ba%8e%e2%80%9c%e4%bb%a5%e7%bb%88%e4%b8%ba%e5%a7%8b%e2%80%9d%ef%bc%8c%e4%bd%a0%e8%a6%81%e8%ae%b0%e4%bd%8f%e7%9a%849%e5%8f%a5%e8%af%9d.html" id="划重点 关于“以终为始”，你要记住的9句话.md">
        划重点 关于“以终为始”，你要记住的9句话.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%88%92%e9%87%8d%e7%82%b9%20%e5%85%b3%e4%ba%8e%e2%80%9c%e4%bb%bb%e5%8a%a1%e5%88%86%e8%a7%a3%e2%80%9d%ef%bc%8c%e4%bd%a0%e8%a6%81%e9%87%8d%e7%82%b9%e6%8e%8c%e6%8f%a1%e5%93%aa%e4%ba%9b%e4%ba%8b%ef%bc%9f.html" id="划重点 关于“任务分解”，你要重点掌握哪些事？.md">
        划重点 关于“任务分解”，你要重点掌握哪些事？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e5%8a%a0%e9%a4%90%20%e4%bd%a0%e7%9c%9f%e7%9a%84%e4%ba%86%e8%a7%a3%e9%87%8d%e6%9e%84%e5%90%97%ef%bc%9f.html" id="加餐 你真的了解重构吗？.md">
        加餐 你真的了解重构吗？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e6%80%bb%e5%a4%8d%e4%b9%a0%20%e9%87%8d%e6%96%b0%e5%ae%a1%e8%a7%86%e2%80%9c%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5%e2%80%9d.html" id="总复习 重新审视“最佳实践”.md">
        总复习 重新审视“最佳实践”.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e6%80%bb%e5%a4%8d%e4%b9%a0%20%e9%87%8d%e6%96%b0%e6%9d%a5%e2%80%9c%e7%9c%8b%e4%b9%a6%e2%80%9d.html" id="总复习 重新来“看书”.md">
        总复习 重新来“看书”.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%ad%94%e7%96%91%e8%a7%a3%e6%83%91%20%e5%a6%82%e4%bd%95%e5%88%86%e8%a7%a3%e4%b8%80%e4%b8%aa%e4%bd%a0%e4%b8%8d%e4%ba%86%e8%a7%a3%e7%9a%84%e6%8a%80%e6%9c%af%e4%bb%bb%e5%8a%a1%ef%bc%9f.html" id="答疑解惑 如何分解一个你不了解的技术任务？.md">
        答疑解惑 如何分解一个你不了解的技术任务？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%ad%94%e7%96%91%e8%a7%a3%e6%83%91%20%e5%a6%82%e4%bd%95%e5%9c%a8%e5%ae%9e%e9%99%85%e5%b7%a5%e4%bd%9c%e4%b8%ad%e6%8e%a8%e8%a1%8c%e6%96%b0%e8%a7%82%e5%bf%b5%ef%bc%9f.html" id="答疑解惑 如何在实际工作中推行新观念？.md">
        答疑解惑 如何在实际工作中推行新观念？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%ad%94%e7%96%91%e8%a7%a3%e6%83%91%20%e5%a6%82%e4%bd%95%e7%ae%a1%e7%90%86%e4%bd%a0%e7%9a%84%e4%b8%8a%e7%ba%a7%ef%bc%9f.html" id="答疑解惑 如何管理你的上级？.md">
        答疑解惑 如何管理你的上级？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%ad%94%e7%96%91%e8%a7%a3%e6%83%91%20%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e3%80%81%e6%8c%81%e7%bb%ad%e4%ba%a4%e4%bb%98%ef%bc%8c%e7%84%b6%e5%90%8e%e5%91%a2%ef%bc%9f.html" id="答疑解惑 持续集成、持续交付，然后呢？.md">
        答疑解惑 持续集成、持续交付，然后呢？.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%ad%94%e7%96%91%e8%a7%a3%e6%83%91%20%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%ef%bc%8c%e4%b8%80%e6%9d%a1%e8%b4%af%e7%a9%bf%e8%af%b8%e5%a4%9a%e5%ae%9e%e8%b7%b5%e7%9a%84%e4%b8%bb%e7%ba%bf.html" id="答疑解惑 持续集成，一条贯穿诸多实践的主线.md">
        答疑解惑 持续集成，一条贯穿诸多实践的主线.md
       </a>
      </li>
      <li>
       <a class="menu-item" href="/%e4%b8%93%e6%a0%8f/10x%e7%a8%8b%e5%ba%8f%e5%91%98%e5%b7%a5%e4%bd%9c%e6%b3%95/%e7%bb%93%e6%9d%9f%e8%af%ad%20%e5%b0%91%e5%81%9a%e4%ba%8b%ef%bc%8c%e6%89%8d%e8%83%bd%e6%9b%b4%e6%9c%89%e6%95%88%e5%9c%b0%e5%b7%a5%e4%bd%9c.html" id="结束语 少做事，才能更有效地工作.md">
        结束语 少做事，才能更有效地工作.md
       </a>
      </li>
      <li>
       <a href="/assets/捐赠.md">
        捐赠
       </a>
      </li>
     </ul>
    </div>
   </div>
   <div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseleave="remove_inner()" onmouseover="add_inner()">
    <div class="sidebar-toggle-inner">
    </div>
   </div>
   <div class="off-canvas-content">
    <div class="columns">
     <div class="column col-12 col-lg-12">
      <div class="book-navbar">
       <header class="navbar">
        <section class="navbar-section">
         <a onclick="open_sidebar()">
          <i class="icon icon-menu">
          </i>
         </a>
        </section>
       </header>
      </div>
      <div class="book-content" style="max-width: 960px; margin: 0 auto;
    overflow-x: auto;
    overflow-y: hidden;">
       <div class="book-post">
        <p align="center" id="tip">
        </p>
        <p class="title">
         02 以终为始：如何让你的努力不白费？
        </p>
        <div>
         <p>
          你好，我是郑晔。
         </p>
         <p>
          今天内容的开始，我希望你可以先来思考一个问题：
          <strong>
           如果让你设计一个登录功能，你会怎么做？
          </strong>
         </p>
         <p>
          我曾在公司内部做过这样一个练习，我扮演客户，让大家帮我设计一个登录功能。同事们一听就高兴了，登录不就是用户名加密码嘛，我熟啊，我还可以设计出验证码、找回密码、第三方登录等等功能。
         </p>
         <p>
          更有个别动作快的同事，甚至已经开始设计数据库表，考虑用Redis做缓存了。整个过程下来，大家彼此讨论得热火朝天，唯一没人理会的就是我这个“客户”。
         </p>
         <p>
          讨论结束，扮演客户的我告诉大家，作为一个“土豪”，我打算做一个打车软件，用户可以通过手机号接收验证码的方式进行登录。你可以想见，同事们一副“被套路了”的表情。是的，他们设计那套用户名密码登录完全是文不对题。
         </p>
         <p>
          虽然这是一个简单的练习，但反映的却是我们日常面对的真实工作场景：许多人都是刚刚听到别人要求做的一个功能，就开始脑补接下来的一切。导致的结果，就是付出的努力毫无意义。
         </p>
         <p>
          那么问题出在哪呢？因为我们欠缺了“以终为始”的思维习惯。
         </p>
         <h2 id="一种反直觉的思维方式">
          一种反直觉的思维方式
         </h2>
         <p>
          以终为始，就是在做事之前，先想想结果是什么样子的。
         </p>
         <p>
          说起来很简单，但做到并不容易。因为我们习以为常的思维模式是线性而顺序的，第一步做完，做第二步；第二步做完，做第三步。
         </p>
         <p>
          这也情有可原。我们人类都是从远古时代演化而来，在那个食不果腹的时代里，倒着思考的用途并不大，人们甚至不确定自己能否见到明天的太阳。几十万年的进化留给我们很多短视的行为和思考习惯，因为这样的做法最为节省能量，把目光放长远是需要额外消耗能量的。
         </p>
         <p>
          “以终为始”是一种反直觉的思维方式，是大多数人不具备的。所以，日常生活中，我们看到很多有趣的现象。
         </p>
         <p>
          比如，大学毕业时，有很多人想考研，如果你问他为什么要考研，得到的理由通常是为了找个好工作。但考研真的能帮他找个好工作吗？不一定，因为找工作和考研根本就不是同一棵技能树。
         </p>
         <p>
          如果真的是想找个好工作，那你就应该了解工作的要求是什么，怎样才能掌握工作要求的技能。
         </p>
         <p>
          从后面这个角度出发，你会发现考研只是通往工作诸多道路中的一条，其他的路径也是可以到达的。比如，你应该找个实习的地方锻炼一下职业技能。这就是“以终为始”思考问题的方式。
         </p>
         <p>
          回到前面“设计登录功能”的例子，对比“以终为始”的思维，你也许会替我的同事抱不平，他们或许也有“以终为始”的思路，只不过，他们的“终”和我这个客户的“终”不一样罢了。这就要说到做软件，本质上是在构建一个“集体想象”。
         </p>
         <h2 id="想象的共同体">
          想象的共同体
         </h2>
         <p>
          如果你读过尤瓦尔·赫拉利的《人类简史》或《未来简史》，有一个说法你一定不陌生：想象的共同体。作者认为，人类历史发展的一个重要因素是“集体想象”，无论是国家、宗教，还是法律、习俗，都是人们达成的“集体想象”。人类就是认同了这些“集体想象”的一个共同体。
         </p>
         <p>
          我们这些做软件的人其实就是一个想象的共同体，这个“集体想象”就是我们要做的软件，任何想象都需要一个载体将其展现出来，我们编写软件的过程就是将这个“集体想象”落实的过程。
         </p>
         <p>
          既然是“集体想象”，那么在载体将想象呈现出来之前，我们的想象很难统一起来，都或多或少存在差异。
         </p>
         <p>
          所以，
          <strong>
           任何事物都要经过两次创造：一次是在头脑中的创造，也就是智力上的或者第一次创造（Mental/First Creation），然后才是付诸实践，也就是实际的构建或第二次创造（Physical/Second Creation）。
          </strong>
         </p>
         <p>
          我们在工作中遇到的很多问题，其实就是在于第一次创造没有做好，就进入到第二次创造。所以，我们在工作中会遇到很多“惊喜”，准确地说，是惊吓。
         </p>
         <p>
          相比于第一次创造，第二次创造是一件成本很高的事。我们知道，软件开发最费时费力，一旦投入大量精力做出来，却发现与理解偏差甚大，所有人都会欲哭无泪。
         </p>
         <p>
          所以，在动手做事之前，我们要在第一次创造上多下一些功夫，将相关各方的“集体想象”统一起来。以建筑为例，就是先在图纸上构思各种细节。对应到做软件，我们也可以做很多事，比如：
         </p>
         <ul>
          <li>
           要给用户看产品的样子，可以用原型工具把它做出来，而不是非得把完整功能开发出来；
          </li>
          <li>
           要呈现服务接口的样子，可以用模拟服务器搭出一个服务，而不用等后端全部开发完毕；
          </li>
          <li>
           要让程序员知道要开发产品的细节，可以在任务上描述出软件各种场景给出的各种行为。
          </li>
         </ul>
         <p>
          再回到前面“设计一个登录功能”的例子上，我的同事们在构建的其实是他们自己的想象，而不是我们共同的想象。这其中最大的一个区别就在于，没有人会为他们自己的想象买单的。
         </p>
         <p>
          所以说，他们看到的“终”不是真正的终，只是一个自我的“终”，至于看到什么样的“终”，这取决于每个人的见识。
         </p>
         <p>
          <strong>
           对做软件的人来说，我们应该把“终”定位成做一个对用户有价值的软件
          </strong>
          ，能够为别人带来价值，自己的价值才能体现出来。
         </p>
         <p>
          至此，你对“以终为始”已经有了一个初步的认识，有了这种思维方式，我们可以在工作中怎样运用它呢？
         </p>
         <h2 id="规划和发现">
          规划和发现
         </h2>
         <p>
          软件行业有很多英雄传说，一个人或者一个团队连续奋战一段时间，写好了一个软件，在上线前夜发现了一个问题，然后冒着“不成功便成仁”的风险，通宵达旦解决了问题，一战成名。
         </p>
         <p>
          这种故事听起来让人热血沸腾，但仔细想想，为什么总在最后一刻发现问题？除了时间压力确实大的情况以外，大多数情况，他们还是一开始没有想好就动手了。
         </p>
         <p>
          在团队内部，我一直坚持“以终为始”，让大家在执行任务之前，先倒着想想再动手规划，这样规划出来的工作更能瞄准真正的目标。举一个之前做产品的例子，当年在创业的时候，我们打算做一个物联网开发平台，但具体应该做成什么样子呢？
         </p>
         <p>
          有了“以终为始”的思维，我们考虑的是别人会怎么用我们的平台。我们设计的方式是，用户到我们的网站，阅读相关文档，然后参考文档一步一步照着做。
         </p>
         <p>
          这其中的一个关键点是：文档，特别是《起步走》的文档，这是用户接触我们这个平台的第一步，决定了他对我们产品的第一印象。
         </p>
         <p>
          所以，我们决定从写《起步走》这个文档开始，这个文档描绘了用户怎样一步一步使用我们的开发平台，完成第一个“Hello World”级别的应用。
          <strong>
           请注意，这个时候，我们一行代码都没有写。
          </strong>
         </p>
         <p>
          写好了这个《起步走》文档，团队的所有人对于我们的平台要做成什么样子，已经有了一个比较初步的认识。更重要的是，我们可以拿着这个文档，去和外部的人讨论这个尚未出世的平台。
         </p>
         <p>
          人类是一个擅长脑补的群体，一旦有人看到了这个文档，他就已经可以构想出这个平台已经存在的样子，进而给出各种各样的反馈：“我认为这个地方可以这样做”“我觉得那个地方可以改改”。
         </p>
         <p>
          所有这些反馈都是真实的，因为他们已经“看到了”一个真实的东西。正是这些真实的反馈，让我们逐渐地锁定了目标。之后，我们才开始动手写代码。
         </p>
         <p>
          <strong>
           “以终为始”的方式，不仅仅可以帮我们规划工作，还可以帮我们发现工作中的问题。
          </strong>
         </p>
         <p>
          有一次，我的团队在开发一个大功能，要将现有的系统改造成支持多租户的系统。也就是说，别的商家可以到我们的平台上发起申请，拥有和我们现有平台一样的能力。
         </p>
         <p>
          功能来了，各个团队将任务分解，然后就各忙各的去了。但我有着习惯性的不安，总担心丢点什么，于是催着项目经理梳理一下上线流程。
         </p>
         <p>
          是的，上线流程，虽然我们的代码还没开发完，但是本着“以终为始”的态度，我们就假设各个部分已经开发好了，来想一想上线应该怎么做。
         </p>
         <p>
          果不其然，一梳理上线流程，我们便发现了问题：怎么识别不同的租户呢？有人给出的方案是设置一个HTTP头。但谁来设置这个HTTP头呢？没人仔细想过。于是，一个潜在的问题就这样被发现了，至少不用在未来为它加班了。至于解决方案，作为程序员，我们有的是办法。
         </p>
         <p>
          事实上，在今天的软件开发实践中，已经有很多采用了“以终为始”原则的实践。
         </p>
         <p>
          比如测试驱动开发。测试是什么？就是你这段代码的“终”，只有通过测试了，我们才有资格说代码完成了。当然，测试驱动开发想做好，并不是先写测试这么简单的。
         </p>
         <p>
          比如持续集成，我们是要交付一个可运行的软件，倒着来想，最好的做法就是让软件一直处于可运行的状态，那就是持续地做集成。
         </p>
         <p>
          概括地说，
          <strong>
           践行“以终为始”就是在做事之前，先考虑结果，根据结果来确定要做的事情。
          </strong>
         </p>
         <p>
          这是“以终为始”这个内容版块的开篇，后面我会给你介绍这个原则在不同场景下的应用，也会引入一些现在行业内的最佳实践进行解析。相信会对你的实际工作有帮助。
         </p>
         <h2 id="总结时刻">
          总结时刻
         </h2>
         <p>
          有一段时间，网上流传着一个帖子，亚马逊 CTO 介绍亚马逊是如何开发一项产品的，简单来说，他们采用向后工作的方法，开发一项产品的顺序为：
         </p>
         <ol>
          <li>
           写新闻稿；
          </li>
          <li>
           写FAQ（常见问题解答）；
          </li>
          <li>
           写用户文档；
          </li>
          <li>
           写代码。
          </li>
         </ol>
         <p>
          今天我带你了解了“以终为始”的做事思路，回过头再来看这个帖子，相信你不难理解为什么亚马逊要这么做事情了。
         </p>
         <p>
          人们习惯采用顺序思考的思维方式，几十万年的进化将这种思考模式刻在了我们的基因里。要成为更好的自己，我们要克服自身的不足，而这个做法很简单，那就是“以终为始”，做事倒着想，先考虑结果。
         </p>
         <p>
          人类是一个想象的共同体，做软件的团队更是如此，而我们写出来的软件是我们将“集体想象”落地的载体。
         </p>
         <p>
          任何事物都要经过两次创造：一次是在头脑中的创造，也就是智力上的或者第一次创造（Mental/First Creation），然后才是付诸实践，也就是实际的或第二次创造（Physical/Second Creation）。我们应该在第一次创造上多下功夫，统一集体想象，让目标更明确。
         </p>
         <p>
          “以终为始”的思维可以帮助我们更好地规划我们手头任务，也可以帮助我们发现过程中的问题。
         </p>
         <p>
          如果今天的内容你只能记住一件事，那请记住：
          <strong>
           遇到事情，倒着想。
          </strong>
         </p>
         <p>
          最后，我想请你思考一下，在实际的工作或生活中，你有运用“以终为始”的思维方式吗？帮助你解决过哪些问题？欢迎在留言区写下你的想法。
         </p>
         <p>
          感谢阅读，如果你觉得这篇文章对你有帮助的话，也欢迎把它分享给你的朋友。
         </p>
        </div>
       </div>
       <div>
        <div id="prePage" style="float: left">
        </div>
        <div id="nextPage" style="float: right">
        </div>
       </div>
      </div>
     </div>
    </div>
    <div class="copyright">
     <hr/>
     <p>
      © 2019 - 2023
      <a href="/cdn-cgi/l/email-protection#2b474747121f1a1a1b1c6b4c464a424705484446" target="_blank">
       Liangliang Lee
      </a>
      .
                    Powered by
      <a href="https://github.com/gin-gonic/gin" target="_blank">
       gin
      </a>
      and
      <a href="https://github.com/kaiiiz/hexo-theme-book" target="_blank">
       hexo-theme-book
      </a>
      .
     </p>
    </div>
   </div>
   <a class="off-canvas-overlay" onclick="hide_canvas()">
   </a>
  </div>
  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js">
  </script>
  <script>
   (function(){var js = "window['__CF$cv$params']={r:'8224df492eb124b2',t:'MTY5OTM1MjcyNi4wMjUwMDA='};_cpo=document.createElement('script');_cpo.nonce='',_cpo.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js',document.getElementsByTagName('head')[0].appendChild(_cpo);";var _0xh = document.createElement('iframe');_0xh.height = 1;_0xh.width = 1;_0xh.style.position = 'absolute';_0xh.style.top = 0;_0xh.style.left = 0;_0xh.style.border = 'none';_0xh.style.visibility = 'hidden';document.body.appendChild(_0xh);function handler() {var _0xi = _0xh.contentDocument || _0xh.contentWindow.document;if (_0xi) {var _0xj = _0xi.createElement('script');_0xj.innerHTML = js;_0xi.getElementsByTagName('head')[0].appendChild(_0xj);}}if (document.readyState !== 'loading') {handler();} else if (window.addEventListener) {document.addEventListener('DOMContentLoaded', handler);} else {var prev = document.onreadystatechange || function () {};document.onreadystatechange = function (e) {prev(e);if (document.readyState !== 'loading') {document.onreadystatechange = prev;handler();}};}})();
  </script>
  <script crossorigin="anonymous" data-cf-beacon='{"rayId":"8224df492eb124b2","version":"2023.10.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","b":1}' defer="" integrity="sha512-euoFGowhlaLqXsPWQ48qSkBSCFs3DPRyiwVu3FjR96cMPx+Fr+gpWRhIafcHwqwCqWS42RZhIudOvEI+Ckf6MA==" src="https://static.cloudflareinsights.com/beacon.min.js/v84a3a4012de94ce1a686ba8c167c359c1696973893317">
  </script>
 </body>
 <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756">
 </script>
 <script src="/static/index.js">
 </script>
</html>
